/* global travelgoFlightSearch, travelgoUpgrades */ (function () { var cfg = typeof travelgoFlightSearch === "object" && travelgoFlightSearch ? travelgoFlightSearch : {}; var upg = typeof travelgoUpgrades === "object" && travelgoUpgrades ? travelgoUpgrades : {}; var features = upg.features || {}; var root = document.getElementById("travelgo-flight-results-root"); if (!root) return; function featureOn(k) { return Number(features[k] || 0) === 1; } function q(sel, ctx) { return (ctx || document).querySelector(sel); } function qa(sel, ctx) { return Array.prototype.slice.call((ctx || document).querySelectorAll(sel)); } function curStateFromUrl() { var p = new URLSearchParams(window.location.search); return { tf_from: p.get("tf_from") || "", tf_to: p.get("tf_to") || "", tf_dep: p.get("tf_dep") || "", tf_ret: p.get("tf_ret") || "", tf_cur: p.get("tf_cur") || "INR", tf_trip: p.get("tf_trip") || "round_trip" }; } function postJson(url, payload) { return fetch(url, { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, credentials: "same-origin", body: JSON.stringify(payload || {}) }).then(function (r) { return r.json().catch(function () { return {}; }); }); } function track(name, payload) { if (!cfg.eventUrl) return; postJson(cfg.eventUrl, { name: name, payload: payload || curStateFromUrl() }); } var toolbar = q(".travelgo-fr-toolbar", root); if (toolbar) { var bar = document.createElement("div"); bar.className = "travelgo-upg-actions"; if (featureOn("saved_trips")) { bar.innerHTML += ''; } if (featureOn("fare_alerts")) { bar.innerHTML += ''; } if (featureOn("compare_drawer")) { bar.innerHTML += ''; } toolbar.parentNode.insertBefore(bar, toolbar.nextSibling); } if (featureOn("recent_searches") && cfg.searchHistoryUrl) { fetch(cfg.searchHistoryUrl, { credentials: "same-origin" }) .then(function (r) { return r.json(); }) .then(function (res) { var items = res && Array.isArray(res.items) ? res.items : []; if (!items.length || !toolbar) return; var wrap = document.createElement("div"); wrap.className = "travelgo-upg-recent"; var title = document.createElement("strong"); title.textContent = (cfg.strings && cfg.strings.recentSearches) || "Recent searches"; title.style.marginRight = "8px"; wrap.appendChild(title); items.slice(0, 6).forEach(function (it) { var dep = it.depart_date || ""; var href = (cfg.resultsPageUrl || window.location.pathname) + "?tf_from=" + (it.route_from || "") + "&tf_to=" + (it.route_to || "") + "&tf_dep=" + dep + "&tf_trip=round_trip&tf_cur=INR"; var a = document.createElement("a"); a.className = "travelgo-upg-chip"; a.href = href; a.textContent = (it.route_from || "") + " → " + (it.route_to || ""); wrap.appendChild(a); }); toolbar.parentNode.insertBefore(wrap, toolbar); }); postJson(cfg.searchHistoryUrl, curStateFromUrl()); } if (featureOn("month_calendar") && cfg.monthFaresUrl) { var st = curStateFromUrl(); if (st.tf_from && st.tf_to && st.tf_dep) { var monthBox = q("#travelgo-fr-farecal-month", root); if (monthBox) { fetch(cfg.monthFaresUrl + "?tf_from=" + encodeURIComponent(st.tf_from) + "&tf_to=" + encodeURIComponent(st.tf_to) + "&tf_dep=" + encodeURIComponent(st.tf_dep), { credentials: "same-origin" }) .then(function (r) { return r.json(); }) .then(function (res) { var items = res && Array.isArray(res.items) ? res.items : []; if (!items.length) return; monthBox.innerHTML = "